package db;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class RicetteDataSource {
	private SQLiteDatabase database;
	private MySQLiteHelper dbHelper;
	private String[] ricetteCol = { MySQLiteHelper.COLUMN_CHIAVE, MySQLiteHelper.COLUMN_NOME,
			MySQLiteHelper.COLUMN_DESCRIZIONE, MySQLiteHelper.COLUMN_IMMAGINE,
			MySQLiteHelper.COLUMN_CATEGORIA, MySQLiteHelper.COLUMN_TEMPO};
	
	private String[] retIngrediente = {MySQLiteHelper.COLUMN_CHIAVE};

	private String[] ingredientiCol = { MySQLiteHelper.COLUMN_CHIAVE, MySQLiteHelper.COLUMN_NOME,
			MySQLiteHelper.COLUMN_IMMAGINE, MySQLiteHelper.COLUMN_CATEGORIA
	};

	public RicetteDataSource(Context context) {
		dbHelper = new MySQLiteHelper(context);
	}

	public void open() throws SQLException {
		database = dbHelper.getWritableDatabase();
	}

	public void close() {
		dbHelper.close();
	}

	public Ricetta creaRicetta(String nome, String descrizione, String immagine, String[] ingredienti, String categoria, int tempo) {
		ContentValues values = new ContentValues();
		values.put(MySQLiteHelper.COLUMN_NOME, nome);
		values.put(MySQLiteHelper.COLUMN_DESCRIZIONE, descrizione);
		values.put(MySQLiteHelper.COLUMN_IMMAGINE, immagine);
		values.put(MySQLiteHelper.COLUMN_CATEGORIA, categoria);
		values.put(MySQLiteHelper.COLUMN_TEMPO, tempo);
		long insertId = database.insert(MySQLiteHelper.TABLE_RICETTA, null,
				values);
		Cursor cursor = database.query(MySQLiteHelper.TABLE_RICETTA,
				ricetteCol, MySQLiteHelper.COLUMN_CHIAVE + " = " + insertId, null,
				null, null, null);

		for(int i=0;i<ingredienti.length;i++){
			values.clear();
			values.put(MySQLiteHelper.COLUMN_RICETTA, cursor.getLong(0));
			Cursor ingrediente = database.query(MySQLiteHelper.TABLE_INGREDIENTE, retIngrediente, ingredienti[i], null, null, null, null);
			values.put(MySQLiteHelper.COLUMN_INGREDIENTE, ingrediente.getLong(0));
			long insertId2 = database.insert(MySQLiteHelper.TABLE_RICETTA, null,
					values);
		}
		cursor.moveToFirst();
		Ricetta nuovaRicetta = cursorToRicette(cursor);
		cursor.close();
		return nuovaRicetta;
	}

	public void cancellaRicetta(Ricetta ricetta) {
		long id = ricetta.getId();
		System.out.println("Comment deleted with id: " + id);
		database.delete(MySQLiteHelper.TABLE_RICETTA, MySQLiteHelper.COLUMN_CHIAVE
				+ " = " + id, null);
	}

	public List<Ricetta> getAllRicette() {
		List<Ricetta> ricette = new ArrayList<Ricetta>();

		Cursor cursor = database.query(MySQLiteHelper.TABLE_RICETTA,
				ricetteCol, null, null, null, null, null);

		cursor.moveToFirst();
		while (!cursor.isAfterLast()) {
			Ricetta ricetta = cursorToRicette(cursor);
			ricette.add(ricetta);
			cursor.moveToNext();
		}
		// make sure to close the cursor
		cursor.close();
		return ricette;
	}

	private Ricetta cursorToRicette(Cursor cursor) {
		Ricetta ricetta = new Ricetta();
		ricetta.setId(cursor.getLong(0));
		ricetta.setNome(cursor.getString(1));
		ricetta.setDescrizione(cursor.getString(2));
		ricetta.setImmagine(cursor.getString(3));
		ricetta.setCategoria(cursor.getString(4));
		ricetta.setTempo(Integer.parseInt(cursor.getString(5)));
		return ricetta;
	}
}
